Page 1 of 2 12 LastLast
Results 1 to 10 of 16

Thread: Mefy's gametypes and the Map Info Mod

  1. #1

    Default Mefy's gametypes & Map Info Mod

    Hey all! Still cruising with 1.11 until I can get my reborn server functioning......

    With a bit of fiddling and help from PurpleElephant and Splatterguts, my mefy's maplist is working! Thanks lads for recommendations.

    Now, when I use the MapInfoMod in conjunction with Mefy's, I get a little hiccup.

    I changed the mapinfo mod entry to reference "sv_extmaplist" instead of "sv_maplist", which works all fine.

    Now, to build extra lists, mefy uses the "&" and "sv_extmaplist2.....etc" as in the below:

    set sv_extmaplist "obj/obj_team1 obj/parabot_obj_ste-mere-eglise dm/mohdm1 &"
    set sv_extmaplist1 "obj/The_Lost_Village dm/mohdm7 &"
    set sv_extmaplist2 "obj/navarone dm/mohdm1 mohdm3 obj/obj_team4 &"
    etc. etc....

    Problem is, that with the Mapinfo mod, the "&" shows up as a "map" name in the list when it gets to the end of the line. So the output onscreen becomes "Nextmap is: &"

    Can I write in some code into the mapinfo.scr further below that says something like "if an "&" appears, then ignore/goto next line"? or somesuch?
    and do I need to also reference "sv_extmaplist1"; "sv_extmaplist2" etc somewhere in the mapinfo.scr?

    Many thanks to you clever peoples.

    Cheers,
    Shane.

    -------------------------------------------------------------------------------------------
    Here is my map rotation list:

    Code:
    //*******************************************
    //************* Maprotatin / Map ************
    
    // Map Rotation List
    set g_extgametype_mohdm1 tdm
    set g_extgametype_mohdm2 tdm
    set g_extgametype_mohdm3 tdm
    set g_extgametype_mohdm4 tdm
    set g_extgametype_mohdm5 tdm
    set g_extgametype_mohdm6 tdm
    set g_extgametype_mohdm7 tdm
    set g_extgametype_obj_team1 obj
    set g_extgametype_obj_team2 obj
    set g_extgametype_obj_team3 obj
    set g_extgametype_obj_team4 obj
    set g_extgametype_parabot_obj_ste-mere-eglise obj
    set g_extgametype_obj_merville obj
    set g_extgametype_obj_stanalie obj
    set g_extgametype_obj_canal obj
    set g_extgametype_vsuk-abbeybeta obj
    set g_extgametype_bastogne obj
    set g_extgametype_parabot_bobobjaa01 obj
    set g_extgametype_parabot_bobobjaa02 obj
    set g_extgametype_ChocolateFactory obj
    set g_extgametype_The_Lost_Village obj
    set g_extgametype_bob_carentan obj
    set g_extgametype_navarone obj
    
    // map info mod
    seta mapinfo 1
    seta mapinfo_mapname 1
    seta mapinfo_custommapwarning 0
    seta mapinfo_customwarning_string1 "Next map is a custom map"
    seta mapinfo_customwarning_string2 "If you do not have it server will kick you."
    
    set sv_extmaplist "obj/obj_team1 obj/parabot_obj_ste-mere-eglise dm/mohdm1 obj/obj_team2 dm/mohdm2 obj/obj_team3 obj/obj_team4 obj/obj_canal obj/obj_merville &"
    set sv_extmaplist1 "obj/The_Lost_Village obj/bob_carentan obj/obj_stanalie obj/vsuk-abbeybeta obj/bastogne obj/parabot_bobobjaa01 obj/navarone obj/parabot_bobobjaa02"
    
    //starting map
    map "obj/obj_team1"
    -----------------------------------------------------------------------------------

    Here is my mapinfo.scr script:

    Code:
    // original by Giffe, modified and extended by www.scapp.net 
    // array word handling by Elgan
    //
    // Uses Cvars:	
    // mapinfo 1
    // mapinfo_mapname 1
    // mapinfo_custommapwarning 1
    // mapinfo_customwarning_string1 "Next map is a custom map"
    // mapinfo_customwarning_string2 "If you do not have it server will kick you."
    //
    // The mapnames are read from mapnames.txt file located in /main/settings folder
    
    main:
    	//make sure not running twice
    	if (level.run_mapinfo)
    		end
    	level.run_mapinfo = 1
    
    	println("Mapinfo mod is called.")
    
    	level.mapnames1= waitexec (settings/mapnames.txt::mapnames1)
    	level.mapnames2= waitexec (settings/mapnames.txt::mapnames2)
    	level.mapnames3= waitexec (settings/mapnames.txt::mapnames3)
    	level.mapnames4= waitexec (settings/mapnames.txt::mapnames4)
    
    	thread nextmap_message
    end
    
    nextmap_message:
    	
    	if(int(getcvar("mapinfo"))!=1)
    		println("Mapinfo mod is not enabled")
    
    	while(1)
    	{
    		if(int(getcvar("mapinfo")) == 1)
    		{
    			if($player != NULL)
    			{
    				local.maplist = getcvar "sv_extmaplist"
    			 	local.words = waitthread split_line local.maplist
    
    			 	level.thismap = getcvar "mapname"
    
    				for(local.i = 1; local.i <= local.words[2];local.i++)
    			 	{
    			 		if(local.words[1][local.i] == level.thismap)
    			 		{
     						local.i++
    						level.nextmap = local.words[1][local.i]
    						if(level.nextmap == NIL || level.nextmap == "")
    						{
    							level.nextmap = local.words[1][1]
    						}
    						waitthread get_ifcustom level.nextmap
    			 		}
    			 	}
    
    				if (int(getcvar("mapinfo_mapname")) == 1)
    				{
    					local.mapname_nat= waitthread getmapname level.thismap
    					if (local.mapname_nat==NIL)
    						local.mapname_nat=level.thismap
    					local.thismap="This Map is: " + local.mapname_nat
    									
    					local.mapname_nat= waitthread getmapname level.nextmap	
    					if (local.mapname_nat==NIL)
    						local.mapname_nat=level.nextmap
    
    					local.nextmap="Next Map is: " + local.mapname_nat
    				}
    				else
    				{
    					local.thismap="This Map is: " + level.thismap
    					local.nextmap="Next Map is: " + level.nextmap
    				}
    	
    				//println local.thismap
    				//println local.nextmap
    
    				huddraw_alpha 232 0
    				huddraw_alpha 233 0
    			
    				if (local.nextmap && local.thismap)
    				{
    					if(local.thismap.size>local.nextmap.size)
    						local.draw_x = local.thismap.size
    					else
    						local.draw_x = local.nextmap.size
    					local.draw_x = -6 * local.draw_x
    		
    					huddraw_align 230 "right" "top"
    					huddraw_alpha 230 0
    					huddraw_virtualsize 230 0
    					huddraw_rect 230 local.draw_x 200 0 0
    					huddraw_color 230 0.8 0.9 1
    					huddraw_font 230 "verdana-12"
    					huddraw_string 230 local.thismap
    		
    					huddraw_align 231 "right" "top"
    					huddraw_alpha 231 0
    					huddraw_virtualsize 231 0
    					huddraw_rect 231 local.draw_x 215 0 0
    					huddraw_color 231 0.8 0.9 1
    					huddraw_font 231 "verdana-12"
    					huddraw_string 231 local.nextmap
    	
    					//******** display a fade-in******
    					for(local.i2 = 0; local.i2 <= .5; local.i2 += .06)
    					{
    	     					huddraw_alpha 230 local.i2
    	     					waitframe;waitframe
    					}
    					wait 1
    					//******** display a fade-in******
    					for(local.i2 = 0; local.i2 <= 1; local.i2 += .06)
    					{
    	     					huddraw_alpha 231 local.i2
    						waitframe;waitframe
    					}
    					wait 1
    					if (int(getcvar("mapinfo_custommapwarning")) == 1)
    					{
    						if (level.iscustommap==1)
    						{
    							local.msg1=getcvar("mapinfo_customwarning_string1")
    							if (local.msg1==NIL)
    								local.msg1="Next map is a custom map."
    							local.msg2=getcvar("mapinfo_customwarning_string2")		
    							if (local.msg2==NIL)
    								local.msg2="If you do not have it server will kick you."
    							if (local.msg1.size>local.msg2.size)
    								local.draw_x = local.msg1.size
    							else
    								local.draw_x = local.msg2.size
    							local.draw_x = -6 * local.draw_x
    
    							huddraw_align 232 "right" "top"
    							huddraw_alpha 232 1
    							huddraw_virtualsize 232 0
    							huddraw_rect 232 local.draw_x 230 0 0
    							huddraw_color 232 1 0 0
    							huddraw_font 232 "verdana-12"
    							huddraw_string 232 local.msg1
    
    							huddraw_align 233 "right" "top"
    							huddraw_alpha 233 1
    							huddraw_virtualsize 233 0
    							huddraw_rect 233 local.draw_x 224 0 0
    							huddraw_color 233 1 0 0
    							huddraw_font 233 "verdana-12"
    							huddraw_string 233 local.msg2
    	
    							//******** display a fade-in
    							//for(local.i3 = 0; local.i3 <= .7; local.i3 += .1)
    							//{
         							//	huddraw_alpha 232 local.i3
         							//	huddraw_alpha 233 local.i3
    							//	waitframe
    							//}
    							wait 1
    						}
    					}
    					wait 30
    				}
    			}
    		}
    		wait 5
    	}
    end
    
    ////////////////////////////////////////////////////////////////////
    getmapname local.name:
    	if (local.name != NIL && local.name !="")
    	{
    		if(level.mapnames1.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames1.size; local.i++)
    			{
    				if (local.name==level.mapnames1[local.i][1])
    				{
    					local.name=level.mapnames1[local.i][2]
    					end local.name
    				}
    			}
    		}
    		if(level.mapnames2.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames2.size; local.i++)
    			{
    				if (local.name==level.mapnames2[local.i][1])
    				{
    					local.name=level.mapnames2[local.i][2]
    					end local.name
    				}
    			}
    		}
    		if(level.mapnames3.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames3.size; local.i++)
    			{
    				if (local.name==level.mapnames3[local.i][1])
    				{
    					local.name=level.mapnames3[local.i][2]
    					end local.name
    				}
    			}
    		}
    		if(level.mapnames4.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames4.size; local.i++)
    			{
    				if (local.name==level.mapnames4[local.i][1])
    				{
    					local.name=level.mapnames4[local.i][2]
    					end local.name
    				}
    			}
    		}
    	}
    end local.name
    
    ////////////////////////////////////////////////////////////////////
    
    
    split_line local.info:
    	local.wordcount = 1
    
    	if(local.info[0] == " ")
    	{
    		local.spacer = "_"
    		local.start = 1
    	}
    	else if(local.info[0] == " " || local.info[0] == "")
    	{
    		local.spacer = " "
    
    		for(local.i = 0;local.i <= local.info.size;local.i++)
    		{
    			if(local.info[local.i] != " " && local.info[local.i] != "")
    			{
    				local.start = local.i
    				break
    			}
    		}
    
    	}
    	else 
    	{
    		local.spacer = " "
    		local.start = 0
    	}
    	
    	for(local.i=local.start;local.i<=local.info.size - 1;local.i++)
    	{	
    		if(local.info[local.i]!=local.spacer &&  local.info[local.i] != "`")
    		{
    			if(local.words[local.wordcount]==NIL)
    			{
    				local.words[local.wordcount]=""
    			}
    
    			local.words[local.wordcount] += local.info[local.i]
    		}
    		else
    		{	
    			if(local.spacer == "_" && local.info[local.i + 1] == "`")
    			{
    				local.words[local.wordcount] += local.info[local.i]			
    			}
    			else if(local.spacer == "_" && local.info[local.i ] != "`")
    			{
    				local.wordcount++
    			}
    			else if(local.spacer == " " && local.info[local.i ] == " ")
    			{
    				if(local.info[local.i + 1] != " ")
    				{
    					local.wordcount++
    				}
    			}
    		}
    	}	
    
    end ( local.words::local.wordcount )
    
    ////////////////////////////////////////////////////////////////////////////////////
    get_ifcustom local.map:
    
    	local.stock = "dm/mohdm1"::"dm/mohdm2"::"dm/mohdm3"::"dm/mohdm4"::"dm/mohdm5"::"dm/mohdm6"::"dm/mohdm7"::"obj/obj_team1"::"obj/obj_team2"::"obj/obj_team3"::"obj/obj_team4"::"obj/mp_palermo_obj"::"lib/mp_anzio_lib"::"lib/mp_tunisia_lib"::"obj/mp_castello_obj"::"lib/mp_bizerteharbor_lib"::"obj/mp_montecassino_tow"::"obj/mp_bologna_obj"::"lib/mp_ship_lib"::"dm/mp_bizerte_dm"::"obj/mp_kasserine_tow"::"dm/MP_Bahnhof_DM"::"dm/MP_Verschneit_DM"::"obj/mp_montebattaglia_tow"::"dm/MP_Brest_DM"::"dm/MP_Unterseite_DM"::"dm/MP_Holland_DM"::"dm/MP_Stadt_DM"::"dm/MP_Gewitter_DM"::"dm/MP_Bazaar_DM"::"obj/MP_Druckkammern_TOW"::"obj/MP_Flughafen_TOW"::"obj/MP_Ardennes_TOW"::"obj/MP_Berlin_TOW "
    
    
    	for(local.i = 1;local.i <= local.stock.size;local.i++)
    	{
    		if(local.stock[local.i] == local.map )
    		{
    			level.iscustommap = 0
    			end
    		}
    	}
    
    	if(local.map[1] == m || local.map[1] == t || local.map[1] == e)
    	{
    		level.iscustommap = 0
    		end
    	}
    	level.iscustommap = 1
    end
    Last edited by OhGaz; May 4th, 2015 at 01:12 AM.

  2. #2
    Developer RyBack's Avatar
    Join Date
    Apr 2014
    Location
    In Front of the screen
    Posts
    1,566

    Default

    fixed : add a "&" check at the line 51
    // original by Giffe, modified and extended by www.scapp.net
    // array word handling by Elgan
    //
    // Uses Cvars:
    // mapinfo 1
    // mapinfo_mapname 1
    // mapinfo_custommapwarning 1
    // mapinfo_customwarning_string1 "Next map is a custom map"
    // mapinfo_customwarning_string2 "If you do not have it server will kick you."
    //
    // The mapnames are read from mapnames.txt file located in /main/settings folder
    
    main:
    	//make sure not running twice
    	if (level.run_mapinfo)
    		end
    	level.run_mapinfo = 1
    
    	println("Mapinfo mod is called.")
    
    	level.mapnames1= waitexec (settings/mapnames.txt::mapnames1)
    	level.mapnames2= waitexec (settings/mapnames.txt::mapnames2)
    	level.mapnames3= waitexec (settings/mapnames.txt::mapnames3)
    	level.mapnames4= waitexec (settings/mapnames.txt::mapnames4)
    
    	thread nextmap_message
    end
    
    nextmap_message:
    
    	if(int(getcvar("mapinfo"))!=1)
    		println("Mapinfo mod is not enabled")
    
    	while(1)
    	{
    		if(int(getcvar("mapinfo")) == 1)
    		{
    			if($player != NULL)
    			{
    				local.maplist = getcvar "sv_extmaplist"
    			 	local.words = waitthread split_line local.maplist
    
    			 	level.thismap = getcvar "mapname"
    
    				for(local.i = 1; local.i <= local.words[2];local.i++)
    			 	{
    			 		if(local.words[1][local.i] == level.thismap)
    			 		{
     						local.i++
    						level.nextmap = local.words[1][local.i]
    						if(level.nextmap == NIL || level.nextmap == ""||level.nextmap == "&")
    						{
    							level.nextmap = local.words[1][1]
    						}
    						waitthread get_ifcustom level.nextmap
    			 		}
    			 	}
    
    				if (int(getcvar("mapinfo_mapname")) == 1)
    				{
    					local.mapname_nat= waitthread getmapname level.thismap
    					if (local.mapname_nat==NIL)
    						local.mapname_nat=level.thismap
    					local.thismap="This Map is: " + local.mapname_nat
    
    					local.mapname_nat= waitthread getmapname level.nextmap
    					if (local.mapname_nat==NIL)
    						local.mapname_nat=level.nextmap
    
    					local.nextmap="Next Map is: " + local.mapname_nat
    				}
    				else
    				{
    					local.thismap="This Map is: " + level.thismap
    					local.nextmap="Next Map is: " + level.nextmap
    				}
    
    				//println local.thismap
    				//println local.nextmap
    
    				huddraw_alpha 232 0
    				huddraw_alpha 233 0
    
    				if (local.nextmap && local.thismap)
    				{
    					if(local.thismap.size>local.nextmap.size)
    						local.draw_x = local.thismap.size
    					else
    						local.draw_x = local.nextmap.size
    					local.draw_x = -6 * local.draw_x
    
    					huddraw_align 230 "right" "top"
    					huddraw_alpha 230 0
    					huddraw_virtualsize 230 0
    					huddraw_rect 230 local.draw_x 200 0 0
    					huddraw_color 230 0.8 0.9 1
    					huddraw_font 230 "verdana-12"
    					huddraw_string 230 local.thismap
    
    					huddraw_align 231 "right" "top"
    					huddraw_alpha 231 0
    					huddraw_virtualsize 231 0
    					huddraw_rect 231 local.draw_x 215 0 0
    					huddraw_color 231 0.8 0.9 1
    					huddraw_font 231 "verdana-12"
    					huddraw_string 231 local.nextmap
    
    					//******** display a fade-in******
    					for(local.i2 = 0; local.i2 <= .5; local.i2 += .06)
    					{
    	     					huddraw_alpha 230 local.i2
    	     					waitframe;waitframe
    					}
    					wait 1
    					//******** display a fade-in******
    					for(local.i2 = 0; local.i2 <= 1; local.i2 += .06)
    					{
    	     					huddraw_alpha 231 local.i2
    						waitframe;waitframe
    					}
    					wait 1
    					if (int(getcvar("mapinfo_custommapwarning")) == 1)
    					{
    						if (level.iscustommap==1)
    						{
    							local.msg1=getcvar("mapinfo_customwarning_string1")
    							if (local.msg1==NIL)
    								local.msg1="Next map is a custom map."
    							local.msg2=getcvar("mapinfo_customwarning_string2")
    							if (local.msg2==NIL)
    								local.msg2="If you do not have it server will kick you."
    							if (local.msg1.size>local.msg2.size)
    								local.draw_x = local.msg1.size
    							else
    								local.draw_x = local.msg2.size
    							local.draw_x = -6 * local.draw_x
    
    							huddraw_align 232 "right" "top"
    							huddraw_alpha 232 1
    							huddraw_virtualsize 232 0
    							huddraw_rect 232 local.draw_x 230 0 0
    							huddraw_color 232 1 0 0
    							huddraw_font 232 "verdana-12"
    							huddraw_string 232 local.msg1
    
    							huddraw_align 233 "right" "top"
    							huddraw_alpha 233 1
    							huddraw_virtualsize 233 0
    							huddraw_rect 233 local.draw_x 224 0 0
    							huddraw_color 233 1 0 0
    							huddraw_font 233 "verdana-12"
    							huddraw_string 233 local.msg2
    
    							//******** display a fade-in
    							//for(local.i3 = 0; local.i3 <= .7; local.i3 += .1)
    							//{
         							//	huddraw_alpha 232 local.i3
         							//	huddraw_alpha 233 local.i3
    							//	waitframe
    							//}
    							wait 1
    						}
    					}
    					wait 30
    				}
    			}
    		}
    		wait 5
    	}
    end
    
    ////////////////////////////////////////////////////////////////////
    getmapname local.name:
    	if (local.name != NIL && local.name !="")
    	{
    		if(level.mapnames1.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames1.size; local.i++)
    			{
    				if (local.name==level.mapnames1[local.i][1])
    				{
    					local.name=level.mapnames1[local.i][2]
    					end local.name
    				}
    			}
    		}
    		if(level.mapnames2.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames2.size; local.i++)
    			{
    				if (local.name==level.mapnames2[local.i][1])
    				{
    					local.name=level.mapnames2[local.i][2]
    					end local.name
    				}
    			}
    		}
    		if(level.mapnames3.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames3.size; local.i++)
    			{
    				if (local.name==level.mapnames3[local.i][1])
    				{
    					local.name=level.mapnames3[local.i][2]
    					end local.name
    				}
    			}
    		}
    		if(level.mapnames4.size > 0)
    		{
    			for(local.i=1; local.i<=level.mapnames4.size; local.i++)
    			{
    				if (local.name==level.mapnames4[local.i][1])
    				{
    					local.name=level.mapnames4[local.i][2]
    					end local.name
    				}
    			}
    		}
    	}
    end local.name
    
    ////////////////////////////////////////////////////////////////////
    
    
    split_line local.info:
    	local.wordcount = 1
    
    	if(local.info[0] == " ")
    	{
    		local.spacer = "_"
    		local.start = 1
    	}
    	else if(local.info[0] == " " || local.info[0] == "")
    	{
    		local.spacer = " "
    
    		for(local.i = 0;local.i <= local.info.size;local.i++)
    		{
    			if(local.info[local.i] != " " && local.info[local.i] != "")
    			{
    				local.start = local.i
    				break
    			}
    		}
    
    	}
    	else
    	{
    		local.spacer = " "
    		local.start = 0
    	}
    
    	for(local.i=local.start;local.i<=local.info.size - 1;local.i++)
    	{
    		if(local.info[local.i]!=local.spacer &&  local.info[local.i] != "`")
    		{
    			if(local.words[local.wordcount]==NIL)
    			{
    				local.words[local.wordcount]=""
    			}
    
    			local.words[local.wordcount] += local.info[local.i]
    		}
    		else
    		{
    			if(local.spacer == "_" && local.info[local.i + 1] == "`")
    			{
    				local.words[local.wordcount] += local.info[local.i]
    			}
    			else if(local.spacer == "_" && local.info[local.i ] != "`")
    			{
    				local.wordcount++
    			}
    			else if(local.spacer == " " && local.info[local.i ] == " ")
    			{
    				if(local.info[local.i + 1] != " ")
    				{
    					local.wordcount++
    				}
    			}
    		}
    	}
    
    end ( local.words::local.wordcount )
    
    ////////////////////////////////////////////////////////////////////////////////////
    get_ifcustom local.map:
    
    	local.stock = "dm/mohdm1"::"dm/mohdm2"::"dm/mohdm3"::"dm/mohdm4"::"dm/mohdm5"::"dm/mohdm6"::"dm/mohdm7"::"obj/obj_team1"::"obj/obj_team2"::"obj/obj_team3"::"obj/obj_team4"::"obj/mp_palermo_obj"::"lib/mp_anzio_lib"::"lib/mp_tunisia_lib"::"obj/mp_castello_obj"::"lib/mp_bizerteharbor_lib"::"obj/mp_montecassino_tow"::"obj/mp_bologna_obj"::"lib/mp_ship_lib"::"dm/mp_bizerte_dm"::"obj/mp_kasserine_tow"::"dm/MP_Bahnhof_DM"::"dm/MP_Verschneit_DM"::"obj/mp_montebattaglia_tow"::"dm/MP_Brest_DM"::"dm/MP_Unterseite_DM"::"dm/MP_Holland_DM"::"dm/MP_Stadt_DM"::"dm/MP_Gewitter_DM"::"dm/MP_Bazaar_DM"::"obj/MP_Druckkammern_TOW"::"obj/MP_Flughafen_TOW"::"obj/MP_Ardennes_TOW"::"obj/MP_Berlin_TOW "
    
    
    	for(local.i = 1;local.i <= local.stock.size;local.i++)
    	{
    		if(local.stock[local.i] == local.map )
    		{
    			level.iscustommap = 0
    			end
    		}
    	}
    
    	if(local.map[1] == m || local.map[1] == t || local.map[1] == e)
    	{
    		level.iscustommap = 0
    		end
    	}
    	level.iscustommap = 1
    end

  3. #3
    Purple Developer Purple Elephant1au's Avatar
    Join Date
    Feb 2012
    Location
    Australia
    Posts
    1,259

    Default

    @Ryback that would only work for the 1st maplist, what about sv_extmaplist1 and sv_extmaplist2 etc

    @ohGaz, you gave me an idea, ill make it compatible with most mefy maplist, including those with the ",ffa" or ",ftobj" in it

    Purple's Playground
    OBJ :
    103.29.85.127:12203
    xfire: purpleelephant1au
    email: purpleelephant1au@gmail.com
    skydrive: PurpleElephantSkydrive




  4. #4
    Purple Developer Purple Elephant1au's Avatar
    Join Date
    Feb 2012
    Location
    Australia
    Posts
    1,259

    Default

    Hi

    Try this one, it should cater for most if not all of mefy extmaplists

    Note: You will need a copy of the global/strings.scr file, you can find it in other mods or search for it, elgbot for instance or ubermod
    // original by Giffe, modified and extended by www.scapp.net
    // array word handling by Elgan
    //
    // Uses Cvars:
    // mapinfo 1
    // mapinfo_mapname 1
    // mapinfo_custommapwarning 1
    // mapinfo_customwarning_string1 "Next map is a custom map"
    // mapinfo_customwarning_string2 "If you do not have it server will kick you."
    //
    // The mapnames are read from mapnames.txt file located in /main/settings folder
    
    main:
        //make sure not running twice
        if (level.run_mapinfo)
            end
        level.run_mapinfo = 1
    
        println("Mapinfo mod is called.")
    
        level.mapnames1= waitexec (settings/mapnames.txt::mapnames1)
        level.mapnames2= waitexec (settings/mapnames.txt::mapnames2)
        level.mapnames3= waitexec (settings/mapnames.txt::mapnames3)
        level.mapnames4= waitexec (settings/mapnames.txt::mapnames4)
    
        thread nextmap_message
    end
    
    nextmap_message:
    
        if(int(getcvar("mapinfo"))!=1)
            println("Mapinfo mod is not enabled")
    
        while(1)
        {
            if(int(getcvar("mapinfo")) == 1)
            {
                if($player != NULL)
                {
                    /// If the cvar is set, it means mefy mod gamelist, else use normal
                    if(getcvar(sv_extmaplist) != "")
                    {
                        println "Using extmaplist"
                        local.words = waitthread get_extmaplist
                    }
                    else
                    {
                        println "Using maplist"
                        local.maplist = getcvar "sv_maplist"
                        local.words = waitthread split_line local.maplist
                    }
    
                     level.thismap = getcvar "mapname"
    
                    for(local.i = 1; local.i <= local.words[2];local.i++)
                     {
                        local.next_map_should_be = local.words[1][local.i + 1]
                         if(local.words[1][local.i] == level.thismap)
                         {
                             local.i++
                            level.nextmap = local.words[1][local.i]
                            if(level.nextmap == NIL || level.nextmap == "" && local.nextmap == local.next_map_should_be)
                            {
                                level.nextmap = local.words[1][1]
                            }
                            waitthread get_ifcustom level.nextmap
                         }
                     }
    
                    if (int(getcvar("mapinfo_mapname")) == 1)
                    {
                        local.mapname_nat= waitthread getmapname level.thismap
                        if (local.mapname_nat==NIL)
                            local.mapname_nat=level.thismap
                        local.thismap="This Map is: " + local.mapname_nat
    
                        local.mapname_nat= waitthread getmapname level.nextmap
                        if (local.mapname_nat==NIL)
                            local.mapname_nat=level.nextmap
    
                        local.nextmap="Next Map is: " + local.mapname_nat
                    }
                    else
                    {
                        local.thismap="This Map is: " + level.thismap
                        local.nextmap="Next Map is: " + level.nextmap
                    }
    
                    //println local.thismap
                    //println local.nextmap
    
                    huddraw_alpha 232 0
                    huddraw_alpha 233 0
    
                    if (local.nextmap && local.thismap)
                    {
                        if(local.thismap.size>local.nextmap.size)
                            local.draw_x = local.thismap.size
                        else
                            local.draw_x = local.nextmap.size
                        local.draw_x = -6 * local.draw_x
    
                        huddraw_align 230 "right" "top"
                        huddraw_alpha 230 0
                        huddraw_virtualsize 230 0
                        huddraw_rect 230 local.draw_x 200 0 0
                        huddraw_color 230 0.8 0.9 1
                        huddraw_font 230 "verdana-12"
                        huddraw_string 230 local.thismap
    
                        huddraw_align 231 "right" "top"
                        huddraw_alpha 231 0
                        huddraw_virtualsize 231 0
                        huddraw_rect 231 local.draw_x 215 0 0
                        huddraw_color 231 0.8 0.9 1
                        huddraw_font 231 "verdana-12"
                        huddraw_string 231 local.nextmap
    
                        //******** display a fade-in******
                        for(local.i2 = 0; local.i2 <= .5; local.i2 += .06)
                        {
                                 huddraw_alpha 230 local.i2
                                 waitframe;waitframe
                        }
                        wait 1
                        //******** display a fade-in******
                        for(local.i2 = 0; local.i2 <= 1; local.i2 += .06)
                        {
                                 huddraw_alpha 231 local.i2
                            waitframe;waitframe
                        }
                        wait 1
                        if (int(getcvar("mapinfo_custommapwarning")) == 1)
                        {
                            if (level.iscustommap==1)
                            {
                                local.msg1=getcvar("mapinfo_customwarning_string1")
                                if (local.msg1==NIL)
                                    local.msg1="Next map is a custom map."
                                local.msg2=getcvar("mapinfo_customwarning_string2")
                                if (local.msg2==NIL)
                                    local.msg2="If you do not have it server will kick you."
                                if (local.msg1.size>local.msg2.size)
                                    local.draw_x = local.msg1.size
                                else
                                    local.draw_x = local.msg2.size
                                local.draw_x = -6 * local.draw_x
    
                                huddraw_align 232 "right" "top"
                                huddraw_alpha 232 1
                                huddraw_virtualsize 232 0
                                huddraw_rect 232 local.draw_x 230 0 0
                                huddraw_color 232 1 0 0
                                huddraw_font 232 "verdana-12"
                                huddraw_string 232 local.msg1
    
                                huddraw_align 233 "right" "top"
                                huddraw_alpha 233 1
                                huddraw_virtualsize 233 0
                                huddraw_rect 233 local.draw_x 224 0 0
                                huddraw_color 233 1 0 0
                                huddraw_font 233 "verdana-12"
                                huddraw_string 233 local.msg2
    
                                //******** display a fade-in
                                //for(local.i3 = 0; local.i3 <= .7; local.i3 += .1)
                                //{
                                     //    huddraw_alpha 232 local.i3
                                     //    huddraw_alpha 233 local.i3
                                //    waitframe
                                //}
                                wait 1
                            }
                        }
                        wait 30
                    }
                }
            }
            wait 5
        }
    end
    
    ////////////////////////////////////////////////////////////////////
    getmapname local.name:
        if (local.name != NIL && local.name !="")
        {
            if(level.mapnames1.size > 0)
            {
                for(local.i=1; local.i<=level.mapnames1.size; local.i++)
                {
                    if (local.name==level.mapnames1[local.i][1])
                    {
                        local.name=level.mapnames1[local.i][2]
                        end local.name
                    }
                }
            }
            if(level.mapnames2.size > 0)
            {
                for(local.i=1; local.i<=level.mapnames2.size; local.i++)
                {
                    if (local.name==level.mapnames2[local.i][1])
                    {
                        local.name=level.mapnames2[local.i][2]
                        end local.name
                    }
                }
            }
            if(level.mapnames3.size > 0)
            {
                for(local.i=1; local.i<=level.mapnames3.size; local.i++)
                {
                    if (local.name==level.mapnames3[local.i][1])
                    {
                        local.name=level.mapnames3[local.i][2]
                        end local.name
                    }
                }
            }
            if(level.mapnames4.size > 0)
            {
                for(local.i=1; local.i<=level.mapnames4.size; local.i++)
                {
                    if (local.name==level.mapnames4[local.i][1])
                    {
                        local.name=level.mapnames4[local.i][2]
                        end local.name
                    }
                }
            }
        }
    end local.name
    
    ////////////////////////////////////////////////////////////////////
    
    
    split_line local.info:
        local.wordcount = 1
    
        if(local.info[0] == " ")
        {
            local.spacer = "_"
            local.start = 1
        }
        else if(local.info[0] == " " || local.info[0] == "")
        {
            local.spacer = " "
    
            for(local.i = 0;local.i <= local.info.size;local.i++)
            {
                if(local.info[local.i] != " " && local.info[local.i] != "")
                {
                    local.start = local.i
                    break
                }
            }
    
        }
        else
        {
            local.spacer = " "
            local.start = 0
        }
    
        for(local.i=local.start;local.i<=local.info.size - 1;local.i++)
        {
            if(local.info[local.i]!=local.spacer &&  local.info[local.i] != "`")
            {
                if(local.words[local.wordcount]==NIL)
                {
                    local.words[local.wordcount]=""
                }
    
                local.words[local.wordcount] += local.info[local.i]
            }
            else
            {
                if(local.spacer == "_" && local.info[local.i + 1] == "`")
                {
                    local.words[local.wordcount] += local.info[local.i]
                }
                else if(local.spacer == "_" && local.info[local.i ] != "`")
                {
                    local.wordcount++
                }
                else if(local.spacer == " " && local.info[local.i ] == " ")
                {
                    if(local.info[local.i + 1] != NIL)
                    {
                        if(local.info[local.i + 1] != " ")
                        {
                            local.wordcount++
                        }
                    }
                }
            }
        }
    
    end ( local.words::local.wordcount )
    
    ////////////////////////////////////////////////////////////////////////////////////
    get_ifcustom local.map:
    
        local.stock = "dm/mohdm1"::"dm/mohdm2"::"dm/mohdm3"::"dm/mohdm4"::"dm/mohdm5"::"dm/mohdm6"::"dm/mohdm7"::"obj/obj_team1"::"obj/obj_team2"::"obj/obj_team3"::"obj/obj_team4"::"obj/mp_palermo_obj"::"lib/mp_anzio_lib"::"lib/mp_tunisia_lib"::"obj/mp_castello_obj"::"lib/mp_bizerteharbor_lib"::"obj/mp_montecassino_tow"::"obj/mp_bologna_obj"::"lib/mp_ship_lib"::"dm/mp_bizerte_dm"::"obj/mp_kasserine_tow"::"dm/MP_Bahnhof_DM"::"dm/MP_Verschneit_DM"::"obj/mp_montebattaglia_tow"::"dm/MP_Brest_DM"::"dm/MP_Unterseite_DM"::"dm/MP_Holland_DM"::"dm/MP_Stadt_DM"::"dm/MP_Gewitter_DM"::"dm/MP_Bazaar_DM"::"obj/MP_Druckkammern_TOW"::"obj/MP_Flughafen_TOW"::"obj/MP_Ardennes_TOW"::"obj/MP_Berlin_TOW "
    
    
        for(local.i = 1;local.i <= local.stock.size;local.i++)
        {
            if(local.stock[local.i] == local.map )
            {
                level.iscustommap = 0
                end
            }
        }
    
        if(local.map[1] == m || local.map[1] == t || local.map[1] == e)
        {
            level.iscustommap = 0
            end
        }
        level.iscustommap = 1
    end
    
    get_extmaplist:
    
    local.cvar = sv_extmaplist
    local.num_list = 0
    
    local.map_array[0] = NIL
    
    while(local.done != 1)
    {
    
        local.maplist = getcvar(local.cvar)
    
        if(local.maplist != NIL)
        {
            if(local.maplist[local.maplist.size - 1] != "&")
            {
                local.maplist = waitthread clean_maplist local.maplist
    
                local.words = waitthread split_line local.maplist
                for(local.i = 1; local.i <= local.words[2];local.i++)
                {
    
                    if((waitexec global/strings.scr::instr "$map" local.words[1][local.i]) != NIL)
                    {
                        local.words[1][local.i] = waitthread convert_maptargetname local.words[1][local.i]
                    }
    
                    local.map_array[local.map_array.size + 1] = local.words[1][local.i]
                }
                local.done = 1
            }
            else
            {
                local.maplist = waitthread clean_maplist local.maplist
    
                local.words = waitthread split_line local.maplist
    
                for(local.i = 1; local.i <= local.words[2];local.i++)
                {
                    if((waitexec global/strings.scr::instr "$map" local.words[1][local.i]) != NIL)
                    {
                        local.words[1][local.i] = waitthread convert_maptargetname local.words[1][local.i]
                    }
    
                    local.map_array[local.map_array.size + 1] = local.words[1][local.i]
                }
    
            local.num_list++
            local.cvar = ("sv_extmaplist" + local.num_list)
            }
            waitframe
        }
    }
    
    /// Combine it to be the same as before
    local.array[0] = "array of words"
    local.array[1] = local.map_array
    local.array[2] = local.map_array.size
    
    end local.array
    
    
    convert_maptargetname local.map:
    
    local.delim = "$"
    local.map = waitexec global/strings.scr::replace local.map local.delim ""
    
    local.cvar = getcvar(local.map)
    
    local.array = waitthread split_line local.cvar
    
    local.map = local.array[1][1]
    
    end local.map
    
    clean_maplist local.maplist:
    /// cleans it up, removes the "&" and any other mefy ext gamelist variables like ",ffa" or ",ftobj"
    local.delim_array = makeArray
    
    "&"
    ",obj"
    ",ffa"
    ",tdm"
    ",rbm"
    ",ft"
    ",ftobj"
    ",ctf"
    ",ftctf"
    ",dem"
    ",ftdem"
    ",tow"
    ",fttow"
    
    endArray
    
    
    for(local.i = 1;local.i < local.delim_array.size;local.i++)
    {
        local.delim = local.delim_array[local.i][1]
        local.maplist = waitexec global/strings.scr::replace local.maplist local.delim ""
    }
    
    
    end local.maplist


    PS One problem i cant seem to get around is if you have the same map more then once in the maplist, because maplist mod doesnt no which map in the list your on, could be the first or the last etc. Ill try again later
    Last edited by Purple Elephant1au; May 4th, 2015 at 05:29 AM.

    Purple's Playground
    OBJ :
    103.29.85.127:12203
    xfire: purpleelephant1au
    email: purpleelephant1au@gmail.com
    skydrive: PurpleElephantSkydrive




  5. #5

    Default

    @ryback: thanks mate. Appreciate your help as always. I'll tinker with that.

    @purple: glad I'm giving out ideas! Looking forward to it

    EDIT: awesome! Thanks purple for the expertise. I'll play with that tonight. Cheers.
    Last edited by OhGaz; May 4th, 2015 at 05:25 AM.

  6. #6
    Purple Developer Purple Elephant1au's Avatar
    Join Date
    Feb 2012
    Location
    Australia
    Posts
    1,259

    Default

    You could even extend the mapinfo mod to include what gametype they will be playing with, if anyone ever has multple gametypes

    Purple's Playground
    OBJ :
    103.29.85.127:12203
    xfire: purpleelephant1au
    email: purpleelephant1au@gmail.com
    skydrive: PurpleElephantSkydrive




  7. #7

    Default

    Nice one - thanks, Purple.

    I made this my new mapinfo scr file, and added strings from elgbot to the mapinfo's pk3 global folder

    Now I tried that script, but it didnt run the mod properly and no messages appeared on-screen. i was getting script errors like this in qconsole:

    Any ideas? Thanks again.

    Code:
    Using extmaplist
        local.maplist = waitexec global/strings.scr::replace local.maplist local.delim "" (custom/mapinfo/mapinfo.scr, 423)
        local.maplist = ^
    
    ^~^~^ Script Error: ScriptMaster::CreateScriptThread: label 'replace' does not exist in 'global/strings.scr'.
    
        local.maplist = waitexec global/strings.scr::replace local.maplist local.delim "" (custom/mapinfo/mapinfo.scr, 423)
        local.maplist = ^
    
    ^~^~^ Script Error: ScriptMaster::CreateScriptThread: label 'replace' does not exist in 'global/strings.scr'.
    
        local.maplist = waitexec global/strings.scr::replace local.maplist local.delim "" (custom/mapinfo/mapinfo.scr, 423)
        local.maplist = ^
    
    ^~^~^ Script Error: ScriptMaster::CreateScriptThread: label 'replace' does not exist in 'global/strings.scr'.
    
        local.maplist = waitexec global/strings.scr::replace local.maplist local.delim "" (custom/mapinfo/mapinfo.scr, 423)
        local.maplist = ^

  8. #8
    Developer RyBack's Avatar
    Join Date
    Apr 2014
    Location
    In Front of the screen
    Posts
    1,566

    Default

    update ur strings.scr :v
    it's inside elgbot

  9. #9

    Default

    Thanks to you both - yeah realised that strings was in the reborn pk3.

    I had the newer strings packaged up in a chronologically earlier pk3 and it was overwriting. All working now. WOOT!

    Cheers again!

  10. #10

    Default

    Anyone else has a problem getting the custom mapwarning to show?
    The custom mapwarning cvar is properly set in server.cfg and Ive tried changing the huddraw numbers, printing locations etc.
    But still doesn't work for me. Everything else about the mod works nicely.

    Funny thing is, I remember it worked a few years ago. Maybe something changed in the meantime with the Reborn patch?
    I'm using the updated strings.

    Am I the only one?

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •